package fragments.demo;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;

public class ExampleFragmentActivity extends Activity {

	/**
	 * Fragment 可以想象成Activity中的一个模块化区域，在Activity运行时我们可以添加/删除Fragment,
	 * Fragment 必须总是被嵌入到一个Activity中, 它们的生命周期直接被其所属的宿主Activity的生命周期影响.
	 * 使用 Fragment 分为以下步骤
	 * 1. 创建 Fragment
	 * 		创建一个 Fragment 必须继承Fragment 或者 Fragment的子类（例如：ListFragment 等等...）并且实现 
	 * 		onCreateView() 方法因为当 Fragment 绘制自己的 Layout 时系统会调用此方法。
	 * 		
	 * 		<!-- 注意：如果你的Fragment继承自ListFragment，那么onCreateView返回一个ListView，所以可以不用实现这个方法  -->
	 * 
	 * 		为每个 Fragment 定义一个布局文件。因为onCreateView()返回的View, 也可以从布局资源文件中读取并生成. 
	 * 		（参考：ArticleListFragment 和 ArticleReaderFragment）
	 * 
	 * 2. 将 Fragment 添加到 activity中
	 * 		有两种方法将Fragment界面添加到activity
	 * 		-> 在activity的layout文件中声明fragment (看res/layout/example_fragment.xml)
	 * 		-> 撰写代码将fragment添加到一个已存在的ViewGroup. 这种方式的好处是activity运行时可以动态的添加、删除fragment
	*/
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		/**
		// 将 Fragment 添加到 activity中： 1. 在activity的example_fragment文件中声明fragment
		// setContentView(R.layout.example_fragment);
		*/
		
		// 将 Fragment 添加到 activity中： 2. 撰写代码将fragment添加到一个已存在的ViewGroup
		
		//step 1: 取得一个 FragmentTransaction 的实例:
		FragmentManager fragmentManager =  this.getFragmentManager();
		FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
		
		//step 2: 将 Fragment 添加到ViewGroup
		//第一个参数是fragment要放入的ViewGroup , 由resource ID指定（这里放两个FrameLayout 它继承制 ViewGroup）
		//第二个参数是需要添加的fragment.

		fragmentTransaction.add(R.id.listFrame, new ArticleListFragment());
		fragmentTransaction.add(R.id.viewerFrame, new ArticleReaderFragment());
		
		//fragmentTransaction.add(R.id.listFrame, new ArticleListFragment());
		//fragmentTransaction.add(R.id.viewerFrame, new ArticleReaderFragment());
		
		//一旦用FragmentTransaction做了改变,为了使改变生效,必须调用commit(). 
		fragmentTransaction.commit();
		
		setContentView(R.layout.example_fragment);
	}
	
}
